package ru.compft.web.view;

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.context.annotation.Scope;
import org.springframework.stereotype.Component;
import org.springframework.util.StringUtils;
import ru.compft.common.data.Module;
import ru.compft.common.data.ModulePage;
import ru.compft.common.utils.GlobalConstants;

import java.io.Serializable;
import java.util.List;

/**
 * User: VVasiliev
 * Date: 14.06.12
 * Time: 13:32
 * Бин хранящий текущую страницу, на которй находится пользователь
 * Нужен для навигации по страницам
 */
@Component("currentView")
@Scope("session")
public class CurrentView implements Serializable {
    private static final long serialVersionUID = -6165062103335862076L;

    private static final Logger logger = LoggerFactory.getLogger(CurrentView.class);

    public static final String BEAN_NAME = "currentView";
    public static final String MODULE_PARAM = "module";
    public static final String TAB_PARAM = "tab";
    public static final String PAGE_PARAM = "page";

    private Module currentModule;
    private List<ModulePage> pageList;  // список всех страниц для текущего модуля

    private String module;
    private String tab;
    private String page;
    private String action;

    public Module getCurrentModule() {
        return currentModule;
    }

    public void setCurrentModule(Module currentModule) {
        this.currentModule = currentModule;
    }

    public String getCurrentPageCode() {
//        final ServletRequest servletRequest = (ServletRequest) FacesUtils.getExternalContext().getRequest();
//        final String tab = servletRequest.getParameter("tab");

        //        System.out.println(" ------- getCurrentPageCode tab = " + tab);

        return StringUtils.hasText(tab) ? tab : GlobalConstants.EMPTY;
//        return GlobalConstants.EMPTY;
    }

    public List<ModulePage> getPageList() {
        return pageList;
    }

    public void setPageList(List<ModulePage> pageList) {
        this.pageList = pageList;
    }

    public String getModule() {
        return module;
    }

    public void setModule(String module) {
        this.module = module;
    }

    public String getTab() {
        return tab;
    }

    public void setTab(String tab) {
        this.tab = tab;
    }

    public String getPage() {
        return page;
    }

    public void setPage(String page) {
        this.page = page;
    }

    public String getAction() {
        return action;
    }

    public void setAction(String action) {
        this.action = action;
    }

    public void clearAll() {
        setModule(null);
        setTab(null);
        setPage(null);
        setAction(null);
    }

    @Override
    public String toString() {
        final StringBuilder sb = new StringBuilder();
        sb.append("CurrentView");
        sb.append("{currentModule=").append(currentModule);
        sb.append(", pageList=").append(pageList);
        sb.append(", module='").append(module).append('\'');
        sb.append(", tab='").append(tab).append('\'');
        sb.append(", page='").append(page).append('\'');
        sb.append(", action='").append(action).append('\'');
        sb.append('}');
        return sb.toString();
    }
}
